import random
import time

from selenium.common import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

from comment.excle_write import excel_append2
from comment.write_excle import excel_append
from compements.assemblies.check_sf_date import check_sf_date
from compements.assemblies.introducing_medication import introducing_medication
from compements.tool import update_exercise_time, update_staple_food


def quarterly_statistics(driver, sfzh, mz_time, skip, record):

    driver.switch_to.default_content()
    WebDriverWait(driver, 10).until(
        ec.presence_of_element_located((By.XPATH, "//dt[contains(text(),'随访服务')]"))).click()
    time.sleep(1)

    sf_time = check_sf_date(driver, skip, record)
    print("现有随访记录:", sf_time)

    # 初始化每个季度的计数器
    q1_count = 0  # 第一季度
    q2_count = 0  # 第二季度
    q3_count = 0  # 第三季度
    q4_count = 0  # 第四季度

    # 遍历日期列表
    for date_str in sf_time:
        # 提取月份信息
        month = int(date_str[5:7].replace("-", ""))
        # 判断所属季度并计数
        if 1 <= month <= 3:
            q1_count += 1
        elif 4 <= month <= 6:
            q2_count += 1
        elif 7 <= month <= 9:
            q3_count += 1
        elif 10 <= month <= 12:
            q4_count += 1

    # 输出每个季度的次数
    print(f"第一季度出现的日期次数: {q1_count} 次")
    print(f"第二季度出现的日期次数: {q2_count} 次")
    print(f"第三季度出现的日期次数: {q3_count} 次")
    print(f"第四季度出现的日期次数: {q4_count} 次")
    sf_time = f"已经建立随访的日期-{sf_time}"
    mz_time = f"符合条件的门诊日期-{mz_time}"
    # 转换评估结果为 Excel 中的表头和内容格式
    column_headers = [
        "身份证号",
        "一季度随访次数", "二季度随访次数", "三季度随访次数", "四季度随访次数",
        "随访日期",
        "符合条件的门诊日期"
    ]

    # 将数据填充到内容列表中
    contents = [
        sfzh,
        q1_count, q2_count, q3_count, q4_count,
        sf_time,
        mz_time
    ]

    # 使用示例
    file_path = "执行结果/慢病随访季度统计结果.xlsx"
    excel_append2(file_path, column_headers, contents)



